package com.google.code.cana.pojo.insumos;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;
import java.util.TreeSet;

/**
 * 
 * @author Samuel de Barros
 * @author Taciano Pinheiro
 * @author Rodrigo Barbosa Lira
 * 
 */
public class Produto implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 495505362550470351L;

	private Integer produtoId;

	private String nome;

	private String unidade;

	private Set<ItemComposicao> itensComposicao = new TreeSet<ItemComposicao>();

	private Date dataCadastro;

	private Double quantidade = 0.0;
	
	private Double precoCusto;
	
	private Double precoVenda = 0.0;

	@SuppressWarnings("unused")
	private String itemComboBox;

	/**
	 * @return the itemComboBox
	 */
	public String getItemComboBox() {
		return this.getNome() + " (" + this.getUnidade() + ")";
	}

	/**
	 * @param itemComboBox
	 *            the itemComboBox to set
	 */
	public void setItemComboBox(String itemComboBox) {
		this.itemComboBox = itemComboBox;
	}

	/**
	 * @return the itensComposicao
	 */
	public Set<ItemComposicao> getItensComposicao() {
		return itensComposicao;
	}

	/**
	 * @param itensComposicao
	 *            the itensComposicao to set
	 */
	public void setItensComposicao(Set<ItemComposicao> itensComposicao) {
		this.itensComposicao = itensComposicao;
	}

	/**
	 * 
	 * @return the dataCadastro
	 */
	public Date getDataCadastro() {
		return dataCadastro;
	}

	/**
	 * 
	 * @param dataCadastro
	 *            the dataCadastro do set
	 */
	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	/**
	 * 
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * 
	 * @param nome
	 *            the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * 
	 * @return the produtoId
	 */
	public Integer getProdutoId() {
		return produtoId;
	}

	/**
	 * 
	 * @param produtoId
	 *            the produtoId to set
	 */
	public void setProdutoId(Integer produtoId) {
		this.produtoId = produtoId;
	}

	/**
	 * 
	 * @return the unidade
	 */
	public String getUnidade() {
		return unidade;
	}

	/**
	 * 
	 * @param unidade
	 *            the unidade to set
	 */
	public void setUnidade(String unidade) {
		this.unidade = unidade;
	}

	/**
	 * @return the quantidade
	 */
	public Double getQuantidade() {
		return quantidade;
	}

	/**
	 * @param quantidade
	 *            the quantidade to set
	 */
	public void setQuantidade(Double quantidade) {
		this.quantidade = quantidade;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	public int compareTo(Produto arg0) {
		return this.getProdutoId().compareTo(arg0.getProdutoId());
	}
	/**
	 * Verifica o conteudo do objeto
	 */
	public boolean equals(Object p) {
		Produto outro = (Produto) p;
		return this.produtoId.equals(outro.getProdutoId());
	}

	/**
	 * @return the precoCusto
	 */
	public Double getPrecoCusto() {
		return precoCusto;
	}

	/**
	 * @return the precoVenda
	 */
	public Double getPrecoVenda() {
		return precoVenda;
	}

	/**
	 * @param precoVenda the precoVenda to set
	 */
	public void setPrecoVenda(Double precoVenda) {
		this.precoVenda = precoVenda;
	}
	
	public String getNomeItemComboBox() {
		return getNome() + " / R$ " + String.valueOf(getPrecoVenda()) + " (Em estoque: " +  String.valueOf(getQuantidade()) + " " + getUnidade() + ")"; 
	}

}
